package interfaz;

import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Iterator;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;

import net.miginfocom.swing.MigLayout;

import javax.swing.ScrollPaneConstants;

import sistemaUsuarios.Usuario;


public class GUIUsuarios extends JPanel implements IVista {

	private JTextField txtNombre;


	private JTextField txtUsuario;
	private JTextField txtEmail;
	private JButton btnBuscar;
	private JPanel tablaPersonas;
	private JComboBox<String> cmbTipoUsuario;


	private JButton nuevaCuenta;

	/**
	 * Create the panel.
	 */
	public GUIUsuarios() {
		initialize();
	}

	private void initialize(){
		setAutoscrolls(true);
		GridBagLayout gridBagLayout = new GridBagLayout();
		gridBagLayout.columnWidths = new int[] {0, 60, 112, 120, 60, 93, 0, 0};
		gridBagLayout.rowHeights = new int[]{24, 0, 0, 0, 30, 0, 0, 0, 0};
		gridBagLayout.columnWeights = new double[]{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0};
		gridBagLayout.rowWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE};
		setLayout(gridBagLayout);
		
		JLabel lblCriteriosDeBsqueda = new JLabel("Criterios de b\u00FAsqueda");
		lblCriteriosDeBsqueda.setFont(new Font("Tahoma", Font.PLAIN, 17));
		GridBagConstraints gbc_lblCriteriosDeBsqueda = new GridBagConstraints();
		gbc_lblCriteriosDeBsqueda.gridwidth = 2;
		gbc_lblCriteriosDeBsqueda.insets = new Insets(0, 0, 5, 5);
		gbc_lblCriteriosDeBsqueda.gridx = 1;
		gbc_lblCriteriosDeBsqueda.gridy = 0;
		add(lblCriteriosDeBsqueda, gbc_lblCriteriosDeBsqueda);
		
		JLabel lblNombre = new JLabel("Nombre");
		GridBagConstraints gbc_lblNombre = new GridBagConstraints();
		gbc_lblNombre.anchor = GridBagConstraints.WEST;
		gbc_lblNombre.insets = new Insets(0, 0, 5, 5);
		gbc_lblNombre.gridx = 1;
		gbc_lblNombre.gridy = 1;
		add(lblNombre, gbc_lblNombre);
		
		txtNombre = new JTextField();
		GridBagConstraints gbc_txtNombre = new GridBagConstraints();
		gbc_txtNombre.insets = new Insets(0, 0, 5, 5);
		gbc_txtNombre.fill = GridBagConstraints.HORIZONTAL;
		gbc_txtNombre.gridx = 2;
		gbc_txtNombre.gridy = 1;
		add(txtNombre, gbc_txtNombre);
		txtNombre.setColumns(10);
		
		JLabel lblEmail = new JLabel("Email");
		GridBagConstraints gbc_lblEmail = new GridBagConstraints();
		gbc_lblEmail.anchor = GridBagConstraints.WEST;
		gbc_lblEmail.insets = new Insets(0, 0, 5, 5);
		gbc_lblEmail.gridx = 4;
		gbc_lblEmail.gridy = 1;
		add(lblEmail, gbc_lblEmail);
		
		txtEmail = new JTextField();
		GridBagConstraints gbc_txtEmail = new GridBagConstraints();
		gbc_txtEmail.insets = new Insets(0, 0, 5, 5);
		gbc_txtEmail.fill = GridBagConstraints.HORIZONTAL;
		gbc_txtEmail.gridx = 5;
		gbc_txtEmail.gridy = 1;
		add(txtEmail, gbc_txtEmail);
		txtEmail.setColumns(10);
		
		JLabel lblNewLabel = new JLabel("Usuario");
		GridBagConstraints gbc_lblNewLabel = new GridBagConstraints();
		gbc_lblNewLabel.anchor = GridBagConstraints.WEST;
		gbc_lblNewLabel.insets = new Insets(0, 0, 5, 5);
		gbc_lblNewLabel.gridx = 1;
		gbc_lblNewLabel.gridy = 2;
		add(lblNewLabel, gbc_lblNewLabel);
		
		txtUsuario = new JTextField();
		GridBagConstraints gbc_txtUsuario = new GridBagConstraints();
		gbc_txtUsuario.insets = new Insets(0, 0, 5, 5);
		gbc_txtUsuario.fill = GridBagConstraints.HORIZONTAL;
		gbc_txtUsuario.gridx = 2;
		gbc_txtUsuario.gridy = 2;
		add(txtUsuario, gbc_txtUsuario);
		txtUsuario.setColumns(10);
		
		JLabel lblNewLabel_1 = new JLabel("Tipo");
		GridBagConstraints gbc_lblNewLabel_1 = new GridBagConstraints();
		gbc_lblNewLabel_1.anchor = GridBagConstraints.WEST;
		gbc_lblNewLabel_1.insets = new Insets(0, 0, 5, 5);
		gbc_lblNewLabel_1.gridx = 1;
		gbc_lblNewLabel_1.gridy = 3;
		add(lblNewLabel_1, gbc_lblNewLabel_1);
		
		cmbTipoUsuario = new JComboBox<String>();
		GridBagConstraints gbc_cmbTecnico = new GridBagConstraints();
		gbc_cmbTecnico.insets = new Insets(0, 0, 5, 5);
		gbc_cmbTecnico.fill = GridBagConstraints.HORIZONTAL;
		gbc_cmbTecnico.gridx = 2;
		gbc_cmbTecnico.gridy = 3;
		cmbTipoUsuario.addItem("Tecnico");
		cmbTipoUsuario.addItem("Cliente");
		add(cmbTipoUsuario, gbc_cmbTecnico);
		
		btnBuscar = new JButton("Buscar");
		GridBagConstraints gbc_btnBuscar = new GridBagConstraints();
		gbc_btnBuscar.insets = new Insets(0, 0, 5, 5);
		gbc_btnBuscar.gridx = 5;
		gbc_btnBuscar.gridy = 3;
		add(btnBuscar, gbc_btnBuscar);
		
		nuevaCuenta = new JButton("Nueva cuenta");
		GridBagConstraints gbc_nuevaCuenta = new GridBagConstraints();
		gbc_nuevaCuenta.insets = new Insets(0, 0, 5, 5);
		gbc_nuevaCuenta.gridx = 5;
		gbc_nuevaCuenta.gridy = 4;
		add(nuevaCuenta, gbc_nuevaCuenta);
		
		tablaPersonas = new JPanel();
		
		
	}
	@Override
	public void update() {
		
		
		
	}

	@Override
	public void SetVisible(boolean visible) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void registerListener(ActionListener listener) {
		btnBuscar.addActionListener(listener);
		nuevaCuenta.addActionListener(listener);
		
	}
	
	public String getTxtNombre() {
		return txtNombre.getText();
	}

	public String getTxtUsuario() {
		return txtUsuario.getText();
	}

	public String getTxtEmail() {
		return txtEmail.getText();
	}

	public String getCmbTipoUsuario() {
		return (String) cmbTipoUsuario.getSelectedItem();
	}

	public void populateTable(ArrayList<Usuario> listaUsuarios, ActionListener listener){
		
		this.remove(tablaPersonas);
		this.removeAll();
		this.initialize();
		
		
		JPanel tablaPersonas = new JPanel();
			
		
		tablaPersonas.setAutoscrolls(true);
		GridBagConstraints gbc_tablaPersonas = new GridBagConstraints();
		gbc_tablaPersonas.fill = GridBagConstraints.BOTH;
		gbc_tablaPersonas.gridwidth = 8;
		gbc_tablaPersonas.insets = new Insets(0, 0, 5, 5);
		gbc_tablaPersonas.gridx = 0;
		gbc_tablaPersonas.gridy = 5;
		add(tablaPersonas, gbc_tablaPersonas);
		tablaPersonas.setLayout(new MigLayout("", "[120px][60px][50px][40px][40px]", "[][]"));
		
		int contadorFilas = 1;
		Iterator<Usuario> it = listaUsuarios.iterator();
		
		
		tablaPersonas.add(new JLabel("NOMBRE"), "cell 0 0" );
		tablaPersonas.add(new JLabel("USUARIO"), "cell 1 0" );
		tablaPersonas.add(new JLabel("TIPO"), "cell 2 0");
		
		while(it.hasNext()){
			Usuario user = it.next();

			tablaPersonas.add(new JLabel(user.getNombre() + " " + user.getApellido()), "cell 0 " + String.valueOf(contadorFilas));
			tablaPersonas.add(new JLabel(user.getUsuario()), "cell 1 " + String.valueOf(contadorFilas));
			tablaPersonas.add(new JLabel(user.getClass().getSimpleName()), "cell 2 " + String.valueOf(contadorFilas));
			
			JButton botonModificar, botonEliminar;
			botonModificar = new JButton("MODIFICAR_" + String.valueOf(contadorFilas - 1));
			botonEliminar = new JButton("ELIMINAR_" + String.valueOf(contadorFilas -1 ));
			
			botonModificar.setActionCommand("MODIFICAR_" + String.valueOf(contadorFilas - 1));
			botonEliminar.setActionCommand("ELIMINAR_" + String.valueOf(contadorFilas -1 ));
			
			botonModificar.addActionListener(listener);
			botonEliminar.addActionListener(listener);
			
			botonModificar.setText("Modificar");
			botonEliminar.setText("Eliminar");
			
			tablaPersonas.add(botonModificar, "cell 3 " + String.valueOf(contadorFilas));
			tablaPersonas.add(botonEliminar, "cell 4 " + String.valueOf(contadorFilas));
			
			contadorFilas++;
		}
		
		this.revalidate();
		this.repaint();

	}
}
